
package videogest;

import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * Esta será una clase abstracta y a su vez una superclase ya que heredan las clases cliente y
 * empleado, y tendra que tener implementado los mentodos abstractos.
 * Esta clase contendrá los atributos especificos a una persona, como el codigo, DNI, cladve
 * de acceso, la categoria de esta persona.
 * @author Jesus FC
 * @version 1.0
 */
public abstract class Persona extends Sujeto{
    private String codigo;
    private CategoriaPersona categoria; // Categoria persona (Jefe, Encargado, cliente)
    private String DNI;
    private String clave;

    public Persona(String nombre, String direccion, String telefono, String email, Codigo codigo, String DNI, CategoriaPersona categoria) throws FileNotFoundException, IOException{
        super(nombre,direccion,telefono, email);
        this.categoria = categoria;
        this.codigo = Fichero.Leer(codigo);
        this.DNI = DNI;
        this.clave = "";
        Fichero.incrementarCodigo(this.codigo, codigo);
    }

    public Persona(String codigo, String clave, String nombre, String direccion, String telefono, String email, String DNI, CategoriaPersona categoria, boolean baja) throws FileNotFoundException, IOException{
        super(nombre,direccion,telefono, email, baja);
        this.categoria = categoria;
        this.codigo = codigo;
        this.DNI = DNI;
        this.clave = clave;
    }


    public String getClave() {
        return clave;
    }

    public void setClave(String clave) {
        this.clave = clave;
    }

     public String getDNI() {
        return DNI;
    }

    public void setDNI(String DNI) {
        if(!DNI.equals(""))
        this.DNI = DNI;
    }
    
    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getCodigo() {
        return codigo;
    }

    public CategoriaPersona getCategoria() {
        return categoria;
    }

    public void setCategoria(CategoriaPersona categoria) {
        this.categoria = categoria;
    }

    @Override
    public abstract void alta();

    @Override
    public abstract void modificar();

    
}
